# -*- coding:utf-8 -*-

####小模块也分出来主要是要进行异常的处理
####
####




-----------------------------------*
#图片处理模块(小模块) image.py

class Image:
    load_image(filename, path = "默认")
    save_image(surface, filename = "默认", path = "默认") #surface是用于截图的窗口

-----------------------------------*
#声音模块(小模块) sound.py

class Sound:
    load_sound(filename,volume = 1.0)

    
class Music:

    play_music(filename, loop = True)

-------------------------------------
#字体模块(小模块) font.py
class Font:

    load_font(filename, size = 12, path = "default")
    
-----------------------------------*****
#游戏对象模块

++++++++++++++++++++
#敌人 enemy.py
class Enemy:
    init(position, _type, motion)    #子类型,血量,攻击范围,攻击力,外形,速度
    move()                          #根据对象的类型确定其运动方式
    fire()                          #控制开火
    update()                        

    self.type       # int
    self.smart      # bool 是否判断攻击范围 *
    self.position   # list[x,y] 中心坐标
    self.hp         # int
    self.area       # circle
    self.power      # int
    self.image      # image
    self.rect       # rect
    self.speed      # int
    self.motion     # int
    
    self.isalive    # bool 是否生存
    
++++++++++++++++++++
#玩家 player.py
class Player:
    init(position, image = "default")
    move()
    fire()
    update() #处理按键事件

    self.hp         # int
    self.exp        # int
    self.power      # int
    self.speed      # int
    self.position   # list[x,y] 中心坐标
    self.direction  # list[up - bool ,down - bool,left - bool,right - bool]
    self.mode       #无敌状态 - int 可以用来判断是否无敌状态,并且可以
#    self.add_power  #
    self.image      # image
    self.rect       # rect

    self.isfire     # bool 判断是否处于开火状态
    self.isalive    # bool 判断是否生存
    self.score      # int 玩家得分

++++++++++++++++++++
#武器 weapon.py
class Weapon:
    init(postion, angle, belongto = None, target = None)
    #belongto 子弹所属对象,用于获得子弹的伤害值
    #target 被锁定开火的对象,用于跟踪弹~
    #angle 子弹的发射方向
    move()
    
    update()

    self.image
    self.rect
    self.angle
    self.pos

++++++++++++++++++++
#道具 property.py
class Property:
    init(postion, _type)
    #type - int 道具类型
    update()
    move()
    apply_to_obj(player)    #将道具的属性加到目标对象上,可以由道具对象自身调用
                            #也可以由吃道具的对象调用

    self.is_eated           #判断是否被吃掉,如果被吃掉,update的时候将其remove
    self.type               #道具的类别,决定其作用

++++++++++++++++++++
#障碍物 block.py
class Block(Weapon):
    

----------------------------------***
#关卡模块 tollgate.py
class TollGate:

    read_map(filename = "default", path = "default")
    #读取地图文件,并且生成相应的对象列表并对其进行排序
    get_current_obj(curent_time)
    #根据当前时间判断对象列表中哪些对象应该被触发,并返回列表中第一个符合条件的对象信息
    #并且将该对象的信息从列表中删除

    self.obj_list
    self.dict = {'time','position', 'type', 'subtype', 'motion', 'property'}

----------------------------------*****
#特殊系统模块 system.py
class System

----------------------------------****
#特效模块 effect.py
class Effect


-----------------------------------**
#界面模块 menu.py
class Menu:

    init(screen)
    process_event()    #处理菜单的按键消息
    draw_menu()        #绘制菜单



--------------------------------------------------------------------
#游戏主逻辑 Game.py

class game:
    init(screen, play_mode)
    #play_number 1P还是2P
    run_game()


#游戏主要流程

                                       游戏初始化(载入关卡,游戏环境配置)
                                                     |
                                                     V
                                                游戏准备画面(3秒)
                                                     |
                                                     V
                                              开始游戏(游戏主循环)
                                                     |
                                                     V
                                                  结束游戏
                                                     

































    
